package com.freedom.sql.jdbc.statemachine;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;

import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser;
import com.freedom.sql.jdbc.utils.LoggerUtils;

public class StateMachine {
	//
	private static final Logger logger = LogManager.getLogger(StateMachine.class);

	public static SQLStatement parseStatement(String content) {
		// 参数校验
		if (null == content) {
			return null;
		}
		// 可以在前面加一些优化的地方，后面再说
		// split
		MySqlStatementParser parser = new MySqlStatementParser(content);
		SQLStatement statement = parser.parseStatement();
		LoggerUtils.debug(logger, "" + statement.getClass());
		return statement;
		// String[] array = content.trim().toLowerCase().split(" ");
		// if (2 == array.length) {
		// if (array[0].equals("show") && array[1].equals("databases")) {
		// return State.SHOW_DATABASES;
		// }
		// } else if (array.length == 3) {
		// if (array[0].equals("set") && array[1].equals("names")) {
		// return State.SET_NAMES;
		// } else if (array[0].equals("select") &&
		// array[1].startsWith("@@character_set_database")
		// && array[2].startsWith("@@collation_database")) {
		// return State.SELECT_CHARACTER_SET_DATABASE_COLLATION_DATABASE;
		// }
		// } else if (array.length == 4) {
		// if (array[0].equals("show") && array[1].equals("variables") &&
		// array[2].equals("like")) {
		// return State.SHOW_VARIABLES_LIKE;
		// } else if (array[0].equals("show") && array[1].equals("create") &&
		// array[2].equals("table")) {
		// return State.SHOW_CREATE_TABLE;
		// }
		// } else if (7 == array.length) {
		// if (array[0].equals("show") && array[1].equals("full") &&
		// array[2].equals("tables")
		// && array[3].equals("where") && array[4].equals("table_type")) {
		// return State.SHOW_FULL_TABLES_WHERE_TABLE_TYPE;
		// }
		// }
		// return State.UNKNOWN;
	}
}
